#pragma once

#include "Core/Renderer/Buffer.h"

namespace Origin
{
    class OpenGLVertexBuffer : public VertexBuffer
    {
    public:
        OpenGLVertexBuffer(float* vertices, uint32_t size);
        virtual ~OpenGLVertexBuffer();

        virtual void Bind() const;
        virtual void Unbind() const;

        virtual const BufferLayout& GetLayout() const override { return _bufferLayout; }
        virtual void SetLayout(const BufferLayout& layout) override { _bufferLayout = layout; }      

    private:
        uint32_t _rendererID;
        BufferLayout _bufferLayout;
    };

    class OpenGLIndexBuffer : public IndexBuffer
    {
    public:
        OpenGLIndexBuffer(uint32_t* vertices, uint32_t count);
        virtual ~OpenGLIndexBuffer();

        virtual void Bind() const;
        virtual void Unbind() const;

        virtual uint32_t GetCount() const;

    private:
        uint32_t _rendererID;
        uint32_t _count;
    };
}

